package com.sirc.zp.sqlprovider;

import com.sirc.zp.domain.UserAudit;
import org.apache.ibatis.jdbc.SQL;

import java.util.Map;

/**
 * Created by lenovo on 2018/3/7.
 */
public class UserAuditProvider {
    /**
     * 通过id查询用户审核信息
     * @param id
     * @return
     */
    public String getUserAuditById(Integer id){
        return new SQL()
        {{
            SELECT("*");
            FROM("useraudit");
            WHERE("uaid="+id);
        }}.toString();
    }
    /**
     * 通过审核发起人(uid)+status查询用户审核信息
     * @param map
     * @return
     */
    public String getUserAuditByUIdAndStatus(Map map){
        return new SQL()
        {{
            SELECT("*");
            FROM("useraudit");
            WHERE("uid="+map.get("uid"));
            WHERE("status='"+map.get("status")+"'");
        }}.toString();
    }
    /**
     * 通过审核人(aid)+status查询用户审核信息，即谁需要审核这条信息
     * @param map
     * @return
     */
    public String getUserAuditByAIdAndStatus(Map map){
        return new SQL()
        {{
            SELECT("*");
            FROM("useraudit");
            WHERE("aid="+map.get("aid"));
            WHERE("status='"+map.get("status")+"'");
        }}.toString();
    }

    /**
     * 添加用户审核记录
     * @param userAudit 用户审核信息
     * @return
     */
    public String addUserAudit(UserAudit userAudit){
        return new SQL(){{
            INSERT_INTO("useraudit");
            if(userAudit.getTitle()!=null)
            {
                VALUES("title", "#{title}");
            }
            if(userAudit.getContent()!=null)
            {
                VALUES("content", "#{content}");
            }
            if(userAudit.getUid()!=null)
            {
                VALUES("uid", "#{uid}");
            }
            if(userAudit.getAid()!=null)
            {
                VALUES("aid", "#{aid}");
            }
            if(userAudit.getStatus()!=null)
            {
                VALUES("status", "#{status}");
            }
            if(userAudit.getComment()!=null)
            {
                VALUES("comment", "#{comment}");
            }
            if(userAudit.getIsdelete()!=null)
            {
                VALUES("isdelete", "#{isdelete}");
            }
        }}.toString();
    }
    /**
     * 通过审核人(uid)查询用户审核信息，即谁需要审核这条信息
     * @param uid
     * @return
     */
    public String getUserAuditbyUID(Integer uid)
    {
        return new SQL()
        {{
            SELECT("*");
            FROM("useraudit");
            WHERE("uid="+uid);
        }}.toString();
    }
    /**
     * 通过审核人aid查询用户审核信息，即谁需要审核这条信息
     * @param aid
     * @return
     */
    public String getUserAuditbyAID(Integer aid)
    {
        return new SQL()
        {{
            SELECT("*");
            FROM("useraudit");
            WHERE("aid="+aid);
        }}.toString();
    }
    /**
     * 更新审核信息
     * @param userAudit
     * @return
     */
    public String updateUserAudit(UserAudit userAudit)
    {
        return new SQL()
        {{
            UPDATE("useraudit");
            if(userAudit.getTitle()!=null)
            {
                SET("title=#{title}");
            }
            if(userAudit.getContent()!=null)
            {
                SET("content=#{content}");
            }
            if(userAudit.getUid()!=null)
            {
                SET("uid=#{uid}");
            }
            if(userAudit.getAid()!=null)
            {
                SET("aid=#{aid}");
            }
            if(userAudit.getStatus()!=null)
            {
                SET("status=#{status}");
            }
            if(userAudit.getComment()!=null)
            {
                SET("comment=#{comment}");
            }
            if(userAudit.getIsdelete()!=null)
            {
                SET("isdelete=#{isdelete}");
            }
            WHERE("uaid = #{uaid}");
        }}.toString();
    }

    /**
     * 通过主键删除审核信息
     * @param id
     * @return
     */
    public String deleteUserAudit(Integer id){
        return new SQL()
        {{
            DELETE_FROM("useraudit");
            WHERE("uaid="+id);
        }}.toString();
    }
}
